Solid state drives (SSDs) are a type of storage device that share a similar footprint with (and provide similar functionality as) traditional magnetic-based hard disk drives (HDDs). Notably, standard SSDs—which utilize “flash” memory—can provide various advantages over standard HDDs, such as considerably faster Input/Output (I/O) performance. For example, average I/O latency speeds provided by SSDs typically outperform those of HDDs because the I/O latency speeds of SSDs are less-affected when data is fragmented across the memory sectors of SSDs. This occurs because HDDs include a read head component that must be relocated each time data is read/written, which produces a latency bottleneck as the average contiguity of written data is reduced over time. Moreover, when fragmentation occurs within HDDs, it becomes necessary to perform resource-expensive defragmentation operations to improve or restore performance. In contrast, SSDs, which are not bridled by read head components, can preserve I/O performance even as data fragmentation levels increase. SSDs also provide the benefit of increased impact tolerance (as there are no moving parts), and, in general, virtually limitless form factor potential. These advantages—combined with the increased availability of SSDs at consumer-affordable prices—make SSDs a preferable choice for mobile devices such as laptops, tablets, and smart phones.
Under common use-cases, the storage space of a given SSD is typically separated into two partitions in order to provide a useful separation between different sets of data stored on the SSD. For example, a common approach for partitioning an SSD of a given consumer-based computing device involves establishing a first partition on the SSD for storing operating system (OS) data and user data, where the first partition is assigned to a majority of the available storage space on the SSD. Continuing with this example approach, a second partition can also be established on the SSD, where the second partition stores a recovery module (e.g., a recovery OS) and is assigned to a remainder of the available storage space (relative to the first partition) on the SSD. In this manner, users can remain capable of utilizing a large amount of storage space for storing their data, with the convenience of being able to reliably access a recovery module for restoring their computing devices when necessary (e.g., in response to failure events).
Notably, it can be common for users to want to separate the aforementioned first partitions into two or more partitions. For example, a user may seek to separate the first partition of a given SSD into two different partitions onto which two different operating systems can respectively be stored. In another example, the user may seek to separate the first partition of the SSD into two different partitions onto which different categories of data can be stored—e.g., OS and application files on one partition, and user files on another partition. Unfortunately, conventional techniques for carrying out such modifications—which can involve resizing existing partitions and creating new partitions—are time consuming and error-prone. Accordingly, there exists a need for an improved technique for modifying partition sizes on SSDs to provide enhanced flexibility to end-users.